package cn.com.dcsgo.strategy;

import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 登录策略工厂
 * 用于根据不同的登录类型选择不同的登录策略
 * 需要新的登录策略时，只需要实现LoginStrategy接口并将其装配到IoC容器中即可
 *
 * @author Dcsgo
 * @since 2025/9/19 14:58
 */
@Component
public class LoginStrategyFactory {
    /**
     * Spring会自动将实现了LoginStrategy接口的类装配到这个Map中
     * key为BeanID
     */
    @Resource
    private Map<String, LoginStrategy> loginStrategyMap = new HashMap<>();

    public LoginStrategy getLoginStrategy(String loginType) {
        return loginStrategyMap.get(loginType);
    }
}
